mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 09:14:19 +08:00
gfs2 fixes
- Fix another freeze/thaw hang - Fix glock cache shrinking - Fix the quota=quiet mount option. -----BEGIN PGP SIGNATURE----- iQJIBAABCAAyFiEEJZs3krPW0xkhLMTc1b+f6wMTZToFAmUIXsEUHGFncnVlbmJh QHJlZGhhdC5jb20ACgkQ1b+f6wMTZToCqw/+NR9VEK014CCpa0sMn5VWUOr2GfdS hM/F2K8+0qqkGzqlfG6vZ1e24UCojQHyYcFT8D0rIep1ZMI0K+yh+5aI74YQEzOx qwjNbA7di/WLGMHUsGHGimJUsWoJGJYoFKcJL72EgHvVasskldC0qrg0T6EtaAyz A2kL11B85ZOOZqE8oqwn9DZeL+WEESGHkir396fexhPeM25KTGQwkEt3xjIsdMrb PQ5AfCzvqkbKxoNxO7ua0Dvq0IK5KjZV47oOCnMqtLPs9q7behOSohpOpbhO2xB5 daHq9ZdShGbJ91Md1I1R9Jiu74uYD3+EMd9mt71cKai3dTYqq39mUuTy4pSl0i3o yWOofoqtcCWZolPJnOE/bLvUAOE/92myAwgYWo4ceg+MuKu5Amk5z0H6j2yph4P1 DVkAe+1qKzon1Pf1ps/UvYkTBQPSFBFmds//lP0v75p19ke+gIzAl2VE07PxWPW3 RKZxIlzBIqwGtlIW4oA1/9rkyiDLAmu9+kFDJMG7XL6a4sxrezM1zZncyoO0N/3o 66oKs4ZirmD2kMQkhIsar/6SJim0w9nHmr0uYttwwXPWk8WtAOq0KUIA2kTIKC2u ywRh7Ge4SS7Wsv0VlT6bEuieRdm0eh4AHW1ODfMmglFN62Ob6lI+gy76wFvr9+Wj XDB0+uC3xpYlrQI= =jocw -----END PGP SIGNATURE----- Merge tag 'gfs2-v6.6-rc1-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2 Pull gfs2 fixes from Andreas Gruenbacher: - Fix another freeze/thaw hang - Fix glock cache shrinking - Fix the quota=quiet mount option * tag 'gfs2-v6.6-rc1-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2: gfs2: Fix quota=quiet oversight gfs2: fix glock shrinker ref issues gfs2: Fix another freeze/thaw hang
This commit is contained in:
commit
a49d273e57
@ -2010,7 +2010,9 @@ static long gfs2_scan_glock_lru(int nr)
|
|||||||
if (!test_bit(GLF_LOCK, &gl->gl_flags)) {
|
if (!test_bit(GLF_LOCK, &gl->gl_flags)) {
|
||||||
if (!spin_trylock(&gl->gl_lockref.lock))
|
if (!spin_trylock(&gl->gl_lockref.lock))
|
||||||
continue;
|
continue;
|
||||||
if (!gl->gl_lockref.count) {
|
if (gl->gl_lockref.count <= 1 &&
|
||||||
|
(gl->gl_state == LM_ST_UNLOCKED ||
|
||||||
|
demote_ok(gl))) {
|
||||||
list_move(&gl->gl_lru, &dispose);
|
list_move(&gl->gl_lru, &dispose);
|
||||||
atomic_dec(&lru_count);
|
atomic_dec(&lru_count);
|
||||||
freed++;
|
freed++;
|
||||||
|
@ -567,15 +567,16 @@ static void freeze_go_callback(struct gfs2_glock *gl, bool remote)
|
|||||||
struct super_block *sb = sdp->sd_vfs;
|
struct super_block *sb = sdp->sd_vfs;
|
||||||
|
|
||||||
if (!remote ||
|
if (!remote ||
|
||||||
gl->gl_state != LM_ST_SHARED ||
|
(gl->gl_state != LM_ST_SHARED &&
|
||||||
|
gl->gl_state != LM_ST_UNLOCKED) ||
|
||||||
gl->gl_demote_state != LM_ST_UNLOCKED)
|
gl->gl_demote_state != LM_ST_UNLOCKED)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Try to get an active super block reference to prevent racing with
|
* Try to get an active super block reference to prevent racing with
|
||||||
* unmount (see trylock_super()). But note that unmount isn't the only
|
* unmount (see super_trylock_shared()). But note that unmount isn't
|
||||||
* place where a write lock on s_umount is taken, and we can fail here
|
* the only place where a write lock on s_umount is taken, and we can
|
||||||
* because of things like remount as well.
|
* fail here because of things like remount as well.
|
||||||
*/
|
*/
|
||||||
if (down_read_trylock(&sb->s_umount)) {
|
if (down_read_trylock(&sb->s_umount)) {
|
||||||
atomic_inc(&sb->s_active);
|
atomic_inc(&sb->s_active);
|
||||||
|
@ -50,7 +50,8 @@ static inline int gfs2_quota_lock_check(struct gfs2_inode *ip,
|
|||||||
ret = gfs2_quota_lock(ip, NO_UID_QUOTA_CHANGE, NO_GID_QUOTA_CHANGE);
|
ret = gfs2_quota_lock(ip, NO_UID_QUOTA_CHANGE, NO_GID_QUOTA_CHANGE);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
if (sdp->sd_args.ar_quota != GFS2_QUOTA_ON)
|
if (sdp->sd_args.ar_quota != GFS2_QUOTA_ON &&
|
||||||
|
sdp->sd_args.ar_quota != GFS2_QUOTA_QUIET)
|
||||||
return 0;
|
return 0;
|
||||||
ret = gfs2_quota_check(ip, ip->i_inode.i_uid, ip->i_inode.i_gid, ap);
|
ret = gfs2_quota_check(ip, ip->i_inode.i_uid, ip->i_inode.i_gid, ap);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
Loading…
Reference in New Issue
Block a user