Hi Steve,

Thanks for your reply.

On 04/24/2018 11:03 AM, Steven Whitehouse wrote:
Hi,


On 24/04/18 03:52, Guoqing Jiang wrote:
Hi,

Since gfs2 can "allow parallel allocation from different nodes simultaneously as the locking granularity is one lock per resource group" per section 3.2 of [1].

Could it possible to make the locking granularity also applies to R/W IO? Then, with the help of "sunit" and "swidth", we basically can lock a stripe, so all nodes can write to different stripes in parallel, so the basic IO unit is one stripe. Since I don't know gfs2 well,  I am wondering it is possible to do it or it doesn't make sense at all for the idea due to some reasons. Any thoughts would be
appreciated, thanks.

I am asking the question because if people want to add the cluster support for md/raid5, then it is better to get the help from filesystem level to ensure only one node can access a stripe at a time, otherwise we have to locking a stripe in md
layer which could cause performance issue.

[1] https://www.kernel.org/doc/ols/2007/ols2007v2-pages-253-260.pdf

Regards,
Guoqing


It is not just performance, it would be correctness too, since there is no guarantee that two nodes are not writing to the same stripe at the same time.

Yes, no fs can guarantee it. I am wondering if using GFS2 as a local filesystem, and gfs2 runs on top of raid5, is it possible that gfs2 can write to two places simultaneously while the two places belong
to one stripe?

The locking granularity is per-inode generally, but also per-rgrp in case of rgrps, but that refers only to the header/bitmap since the allocated blocks are subject to the per-inode glocks in general.

Please correct me, does it mean there are two types of locking granularity? per-rgrp is for allocate rgrp,
and per-inode if for R/W IO, thanks.

I don't think it would be easy to try and make them correspond with raid stripes and getting gfs2 to work with md would be non-trivial,

Totally agree :-).

Regards,,
Guoqing

Reply via email to