ocfs2: Fix possible deadlock when extending quota file
In OCFS2, allocator locks rank above transaction start. Thus we cannot extend quota file from inside a transaction less we could deadlock. We solve the problem by starting transaction not already in ocfs2_acquire_dquot() but only in ocfs2_local_read_dquot() and ocfs2_global_read_dquot() and we allocate blocks to quota files before starting the transaction. In case we crash, quota files will just have a few blocks more but that's no problem since we just use them next time we extend the quota file. Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Joel Becker <joel.becker@oracle.com>
Bu işleme şunda yer alıyor:

işlemeyi yapan:
Joel Becker

ebeveyn
8a57a9dda7
işleme
b409d7a0ab
@@ -363,11 +363,6 @@ static inline int ocfs2_quota_trans_credits(struct super_block *sb)
|
||||
return credits;
|
||||
}
|
||||
|
||||
/* Number of credits needed for removing quota structure from file */
|
||||
int ocfs2_calc_qdel_credits(struct super_block *sb, int type);
|
||||
/* Number of credits needed for initialization of new quota structure */
|
||||
int ocfs2_calc_qinit_credits(struct super_block *sb, int type);
|
||||
|
||||
/* group extend. inode update and last group update. */
|
||||
#define OCFS2_GROUP_EXTEND_CREDITS (OCFS2_INODE_UPDATE_CREDITS + 1)
|
||||
|
||||
|
Yeni konuda referans
Bir kullanıcı engelle