![Steven Whitehouse](/assets/img/avatar_default.png)
By moving gfs2_recoverd, we can make an additional function static and it also leaves only (the already scheduled for removal) gfs2_glockd in daemon.c. At the same time the declaration of gfs2_quotad is moved to quota.h to reflect the new location of gfs2_quotad in a previous patch. Also the recovery.h and quota.h headers are cleaned up. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
62 lines
1.6 KiB
C
62 lines
1.6 KiB
C
/*
|
|
* Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
|
|
* Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved.
|
|
*
|
|
* This copyrighted material is made available to anyone wishing to use,
|
|
* modify, copy, or redistribute it subject to the terms and conditions
|
|
* of the GNU General Public License version 2.
|
|
*/
|
|
|
|
#include <linux/sched.h>
|
|
#include <linux/slab.h>
|
|
#include <linux/spinlock.h>
|
|
#include <linux/completion.h>
|
|
#include <linux/buffer_head.h>
|
|
#include <linux/kthread.h>
|
|
#include <linux/delay.h>
|
|
#include <linux/gfs2_ondisk.h>
|
|
#include <linux/lm_interface.h>
|
|
#include <linux/freezer.h>
|
|
|
|
#include "gfs2.h"
|
|
#include "incore.h"
|
|
#include "daemon.h"
|
|
#include "glock.h"
|
|
#include "log.h"
|
|
#include "recovery.h"
|
|
#include "super.h"
|
|
#include "util.h"
|
|
|
|
/* This uses schedule_timeout() instead of msleep() because it's good for
|
|
the daemons to wake up more often than the timeout when unmounting so
|
|
the user's unmount doesn't sit there forever.
|
|
|
|
The kthread functions used to start these daemons block and flush signals. */
|
|
|
|
/**
|
|
* gfs2_glockd - Reclaim unused glock structures
|
|
* @sdp: Pointer to GFS2 superblock
|
|
*
|
|
* One or more of these daemons run, reclaiming glocks on sd_reclaim_list.
|
|
* Number of daemons can be set by user, with num_glockd mount option.
|
|
*/
|
|
|
|
int gfs2_glockd(void *data)
|
|
{
|
|
struct gfs2_sbd *sdp = data;
|
|
|
|
while (!kthread_should_stop()) {
|
|
while (atomic_read(&sdp->sd_reclaim_count))
|
|
gfs2_reclaim_glock(sdp);
|
|
|
|
wait_event_interruptible(sdp->sd_reclaim_wq,
|
|
(atomic_read(&sdp->sd_reclaim_count) ||
|
|
kthread_should_stop()));
|
|
if (freezing(current))
|
|
refrigerator();
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|