------- Comment From <email address hidden> 2017-04-24 17:35 EDT------- Actually, I see examples of taking read locks such as:
2627 /* obtain read lock on map */ 2628 IREAD_LOCK(ipimap, RDWRLOCK_IMAP); 2629 2630 /* read the iag */ 2631 if ((rc = diIAGRead(imap, iagno, &mp))) { 2632 IREAD_UNLOCK(ipimap);
So maybe a
/* acquire inode map lock */ IWRITE_LOCK(ipimap, RDWRLOCK_IMAP);
followed by
/* release the inode map lock */ IWRITE_UNLOCK(ipimap);
is warranted to keep the diUnmount()/diMount() somewhat atomic?
------- Comment From <email address hidden> 2017-04-24 17:35 EDT-------
Actually, I see examples of taking read locks such as:
2627 /* obtain read lock on map */ ipimap) ;
2628 IREAD_LOCK(ipimap, RDWRLOCK_IMAP);
2629
2630 /* read the iag */
2631 if ((rc = diIAGRead(imap, iagno, &mp))) {
2632 IREAD_UNLOCK(
So maybe a
/* acquire inode map lock */
IWRITE_LOCK(ipimap, RDWRLOCK_IMAP);
followed by
/* release the inode map lock */ UNLOCK( ipimap) ;
IWRITE_
is warranted to keep the diUnmount( )/diMount( ) somewhat atomic?