Date: Sat, 25 Feb 2006 22:25:46 +0800 From: "Wei Lei" <weilei84@gmail.com> To: freebsd-fs@freebsd.org Cc: Manish Rai Jain <manishrjain@gmail.com> Subject: Doubt about ntfs code: lockmgr with LK_INTERLOCK flag Message-ID: <36fee7420602250625h7271d694i7bfc9e69eda8ade7@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hi list,
Nice to be here =3D)
I am new here so just hope my first post doesn't mismatch the topic.
I have a doubt when understanding the ntfs code with freebsd 5.4:
ntfs_subr.c, function ntfs_ntget().
I understand that lockmgr() here is trying to get an exclusive lock and
release the mutex ip->i_interlock,
so that the protection can expand from use_count to the whole ntnode.
But what's the significance of having such a mechanism? What could possibly
happen if I do a
mtx_unlock first then acquire the exclusive lock?
This is the code in ntfs_subr.c
352 int
353 ntfs_ntget(ip)
354 struct ntnode *ip;
355 {
356 dprintf((*"ntfs_ntget: get ntnode %d: %p, usecount: %d\n"*,
357 ip->i_number, ip, ip->i_usecount));
358
359 mtx_lock(&ip->i_interlock);
360 ip->i_usecount++;
361 lockmgr(&ip->i_lock, LK_EXCLUSIVE | LK_INTERLOCK,
&ip->i_interlock,
362 NULL);
363
364 return 0;
365 }
Regards,
Wei Lei
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?36fee7420602250625h7271d694i7bfc9e69eda8ade7>
