Re: Multi-CPU harmless lockdep on x86 while copying data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Mar 10, 2014 at 01:55:23PM +1100, Dave Chinner wrote:
> Changing the directory code to handle this sort of locking is going
> to require a bit of surgery. However, I can see advantages to moving
> directory data to the same locking strategy as regular file data -
> locking heirarchies are identical, directory ilock hold times are
> much reduced, we don't get lockdep whining about taking page faults
> with the ilock held, etc.
> 
> A quick hack at to demonstrate the high level, initial step of using
> the IOLOCK for readdir serialisation. I've done a little smoke
> testing on it, so it won't die immediately. It should get rid of all
> the nasty lockdep issues, but it doesn't start to address the deeper
> restructing that is needed.

What synchronization do we actually need from the iolock?  Pushing the
ilock down to where it's actually needed is a good idea either way,
though.

> This would be a straight forward change, except for two things:
> filestreams and lockdep. The filestream allocator takes the
> directory iolock and makes assumptions about parent->child locking
> order of the iolock which will now be invalidated. Hence some
> changes to the filestreams code is needed to ensure that it never
> blocks on directory iolocks and deadlocks. instead it needs to fail
> stream associations when such problems occur.

I think the right fix is to stop abusing the iolock in filestreams.
To me it seems like a look inside fstrm_item_t should be fine
for what the filestreams code wants if I understand it correctly.

>From looking over some of the filestreams code just for a few minutes
I get an urge to redo lots of it right now..

> @@ -1228,7 +1244,7 @@ xfs_create(
>  	 * the transaction cancel unlocking dp so don't do it explicitly in the
>  	 * error path.
>  	 */
> -	xfs_trans_ijoin(tp, dp, XFS_ILOCK_EXCL);
> +	xfs_trans_ijoin(tp, dp, XFS_IOLOCK_EXCL | XFS_ILOCK_EXCL);

What do we need the iolock on these operations for?

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs




[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux