Hi Tom;

I adjusted your loop a little :)

Did you intend to retry domount() if retval was not EBUSY or 0 ??

1260         /*
1261          * If we get EBUSY, we try again once to see if we can  
perform
1262          * the mount. We do this because of a spurious race  
condition.
1263          */
1264         for (i = 0; i < 2; i++) {
1265                 retval = domount(NULL, uap, stubvp, cr, vfsp);
1266                 if (retval == 0) {
1267                         retval = VFS_ROOT(*vfsp, newvpp);
1268                         VFS_RELE(*vfsp);
1269                         break;
1270                 }
....                 if (retval == EBUSY) {
1271                         int     error;
1272                         bool_t  was_mounted;
1273
1274                         /*
1275                          * Before we try it again, why don't we  
check
1276                          * to see if it is mounted!
1277                          */
1278                         error =  
nfs4_trigger_mounted_already(stubvp,
1279                             newvpp, &was_mounted, vfsp);
1280                         if (error) {
1282                                 break;
1283                         }
....                         if (was_mounted) {
1284                                 retval = 0;
1285                                 break;
1286                         }
1293                 } else {
....                       break;
....                 }
1294         }


Robert..


Reply via email to