GFS2: Allow flocks to use normal glock dq rather than dq_wait
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/1 GFS2: Allow flocks to use normal glock dq rather than dq_wait
Hi,
This patch allows flock glocks to use a non-blocking dequeue rather than dq_wait. It also reverts the previous patch I had posted regarding dq_wait. The reverted patch isn't necessarily a bad idea, but I decided this might avoid unforeseen side effects, and was therefore safer.
Regards,
Bob Peterson
Red Hat File Systems
---
fs/gfs2/file.c +1 -1
@@ -991,7 +991,7 @@ static int do_flock(struct file *file, int cmd, struct file_lock *fl) goto out;flock_lock_file_wait (file, &(struct file_lock ){.fl_type =F_UNLCK }); -gfs2_glock_dq_wait (fl_gh); +gfs2_glock_dq (fl_gh);gfs2_holder_reinit (state, flags, fl_gh); }else { error = gfs2_glock_get(GFS2_SB(&ip->i_inode), ip->i_no_addr,
fs/gfs2/glock.c +1 -3
@@ -1128,9 +1128,7 @@ void gfs2_glock_dq_wait(struct gfs2_holder *gh)struct gfs2_glock *gl = gh->gh_gl;gfs2_glock_dq (gh);might_sleep (); -if (!find_first_holder (gl)) -wait_on_bit (&gl->gl_flags,GLF_DEMOTE , gfs2_glock_demote_wait, -TASK_UNINTERRUPTIBLE ); +wait_on_bit (&gl->gl_flags,GLF_DEMOTE , gfs2_glock_demote_wait,TASK_UNINTERRUPTIBLE ); }/**
PATCH 1/1 GFS2: Allow flocks to use normal glock dq rather than dq_wait
Hi,
Both patches are now in the -nmw tree. Thanks,
Steve.
Quoted 43 lines · Bob Peterson
Hi,
This patch allows flock glocks to use a non-blocking dequeue rather than
dq_wait. It also reverts the previous patch I had posted regardingdq_wait. The reverted patch isn't necessarily a bad idea, but I decided this might avoid unforeseen side effects, and was therefore safer.Regards,
Bob Peterson
Red Hat File SystemsSigned-off-by Bob Peterson <[email protected]>---
fs/gfs2/file.c +1
-1@@ -991,7 +991,7 @@ static int do_flock(struct file *file, int cmd, struct file_lock *fl) goto out;flock_lock_file_wait (file, &(struct file_lock ){.fl_type =F_UNLCK }); -gfs2_glock_dq_wait (fl_gh); +gfs2_glock_dq (fl_gh);gfs2_holder_reinit (state, flags, fl_gh); }else { error = gfs2_glock_get(GFS2_SB(&ip->i_inode), ip->i_no_addr,fs/gfs2/glock.c +1
-3@@ -1128,9 +1128,7 @@ void gfs2_glock_dq_wait(struct gfs2_holder *gh)struct gfs2_glock *gl = gh->gh_gl;gfs2_glock_dq (gh);might_sleep (); -if (!find_first_holder (gl)) -wait_on_bit (&gl->gl_flags,GLF_DEMOTE , gfs2_glock_demote_wait, -TASK_UNINTERRUPTIBLE ); +wait_on_bit (&gl->gl_flags,GLF_DEMOTE , gfs2_glock_demote_wait,TASK_UNINTERRUPTIBLE ); }/**