Changeset 31566 in vbox for trunk/src/VBox/Additions/solaris
- Timestamp:
- Aug 11, 2010 1:30:44 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 64670
- Location:
- trunk/src/VBox/Additions/solaris/SharedFolders
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/solaris/SharedFolders/vboxfs_prov.c
r31537 r31566 41 41 static VBSFCLIENT vbox_client; 42 42 43 static int sfprov_vbox2errno(int rc) 44 { 45 if (rc == VERR_ACCESS_DENIED) 46 return (EACCES); 47 return (RTErrConvertToErrno(rc)); 48 } 49 43 50 /* 44 51 * utility to create strings … … 73 80 if (RT_SUCCESS(rc)) 74 81 { 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 82 rc = vboxConnect(&vbox_client); 83 if (RT_SUCCESS(rc)) 84 { 85 rc = vboxCallSetUtf8(&vbox_client); 86 if (RT_SUCCESS(rc)) 87 { 88 return ((sfp_connection_t *)&vbox_client); 89 } 90 else 91 cmn_err(CE_WARN, "sfprov_connect: vboxCallSetUtf8() failed"); 92 93 vboxDisconnect(&vbox_client); 94 } 95 else 96 cmn_err(CE_WARN, "sfprov_connect: vboxConnect() failed rc=%d", rc); 90 97 vboxUninit(); 91 98 } … … 245 252 sfprov_create(sfp_mount_t *mnt, char *path, sfp_file_t **fp) 246 253 { 254 247 255 int rc; 248 256 SHFLCREATEPARMS parms; … … 261 269 if (RT_FAILURE(rc)) 262 270 { 263 cmn_err(CE_NOTE, "sfprov_create: vboxCallCreate failed. path=%s rc=%d\n", path, rc); 264 return (EINVAL); 271 if (rc != VERR_ACCESS_DENIED && rc != VERR_WRITE_PROTECT) 272 cmn_err(CE_WARN, "sfprov_create: vboxCallCreate failed! path=%s rc=%d\n", path, rc); 273 rc = sfprov_vbox2errno(rc); 274 return (rc); 265 275 } 266 276 if (parms.Handle == SHFL_HANDLE_NIL) { … … 297 307 if (RT_FAILURE(rc) && rc != VERR_ACCESS_DENIED) { 298 308 kmem_free(str, size); 299 return RTErrConvertToErrno(rc);309 return sfprov_vbox2errno(rc); 300 310 } 301 311 if (parms.Handle == SHFL_HANDLE_NIL) { … … 310 320 if (RT_FAILURE(rc)) { 311 321 kmem_free(str, size); 312 return RTErrConvertToErrno(rc);322 return sfprov_vbox2errno(rc); 313 323 } 314 324 if (parms.Handle == SHFL_HANDLE_NIL) { … … 666 676 (SHFL_INFO_SET | SHFL_INFO_FILE), &bytes, (SHFLDIRINFO *)&info); 667 677 if (RT_FAILURE(rc)) { 668 cmn_err(CE_WARN, "sfprov_set_attr: vboxCallFSInfo(%s, FILE) failed rc=%d", 678 if (rc != VERR_ACCESS_DENIED && rc != VERR_WRITE_PROTECT) 679 { 680 cmn_err(CE_WARN, "sfprov_set_attr: vboxCallFSInfo(%s, FILE) failed rc=%d", 669 681 path, rc); 670 err = RTErrConvertToErrno(rc); 682 } 683 err = sfprov_vbox2errno(rc); 671 684 goto fail1; 672 685 } … … 723 736 cmn_err(CE_WARN, "sfprov_set_size: vboxCallFSInfo(%s, SIZE) failed rc=%d", 724 737 path, rc); 725 err = RTErrConvertToErrno(rc);738 err = sfprov_vbox2errno(rc); 726 739 goto fail1; 727 740 } … … 761 774 762 775 if (RT_FAILURE(rc)) 763 return ( EINVAL);776 return (sfprov_vbox2errno(rc)); 764 777 if (parms.Handle == SHFL_HANDLE_NIL) { 765 778 if (parms.Result == SHFL_FILE_EXISTS) … … 785 798 kmem_free(str, size); 786 799 if (RT_FAILURE(rc)) 787 return ( EINVAL);800 return (sfprov_vbox2errno(rc)); 788 801 return (0); 789 802 } … … 800 813 kmem_free(str, size); 801 814 if (RT_FAILURE(rc)) 802 return ( RTErrConvertToErrno(rc));815 return (sfprov_vbox2errno(rc)); 803 816 return (0); 804 817 } … … 819 832 kmem_free(new, new_size); 820 833 if (RT_FAILURE(rc)) 821 return ( RTErrConvertToErrno(rc));834 return (sfprov_vbox2errno(rc)); 822 835 return (0); 823 836 } … … 929 942 930 943 default: 931 error = RTErrConvertToErrno(error);944 error = sfprov_vbox2errno(error); 932 945 goto done; 933 946 } -
trunk/src/VBox/Additions/solaris/SharedFolders/vboxfs_vfs.c
r30527 r31566 341 341 } 342 342 343 344 345 346 347 348 349 343 /* 344 * find an available minor device number for this mount 345 */ 346 mutex_enter(&sffs_minor_lock); 347 do { 348 sffs_minor = (sffs_minor + 1) & L_MAXMIN32; 349 dev = makedevice(sffs_major, sffs_minor); 350 350 } while (vfs_devismounted(dev)); 351 351 mutex_exit(&sffs_minor_lock); -
trunk/src/VBox/Additions/solaris/SharedFolders/vboxfs_vnode.c
r31537 r31566 534 534 vtype_t create, 535 535 sffs_stat_t *stat, 536 uint64_t stat_time) 536 uint64_t stat_time, 537 int *err) 537 538 { 538 539 avl_index_t where; 539 540 sfnode_t template; 540 541 sfnode_t *node; 541 int error ;542 int error = 0; 542 543 int type; 543 544 char *fullpath; … … 546 547 547 548 ASSERT(MUTEX_HELD(&sffs_lock)); 549 550 if (err) 551 *err = error; 548 552 549 553 /* … … 606 610 } 607 611 612 if (err) 613 *err = error; 614 608 615 /* 609 616 * If no errors, make a new node and return it. … … 750 757 node = sfnode_lookup(dir, dirent->d_name, VNON, 751 758 &cur_stats->sf_stats[cur_snum], 752 sfnode_cur_time_usec() );759 sfnode_cur_time_usec(), NULL); 753 760 if (node == NULL) 754 761 panic("sffs_readdir() lookup failed"); … … 1157 1164 * Lookup the node. 1158 1165 */ 1159 node = sfnode_lookup(VN2SFN(dvp), name, VNON, NULL, 0 );1166 node = sfnode_lookup(VN2SFN(dvp), name, VNON, NULL, 0, NULL); 1160 1167 if (node != NULL) 1161 1168 *vpp = sfnode_get_vnode(node); … … 1252 1259 */ 1253 1260 mutex_enter(&sffs_lock); 1254 node = sfnode_lookup(VN2SFN(dvp), name, VNON, NULL, 0 );1261 node = sfnode_lookup(VN2SFN(dvp), name, VNON, NULL, 0, NULL); 1255 1262 if (node != NULL) { 1256 1263 mutex_exit(&sffs_lock); … … 1262 1269 */ 1263 1270 sfnode_invalidate_stat_cache(VN2SFN(dvp)); 1264 node = sfnode_lookup(VN2SFN(dvp), name, VREG, NULL, 0); 1271 int lookuperr; 1272 node = sfnode_lookup(VN2SFN(dvp), name, VREG, NULL, 0, &lookuperr); 1265 1273 if (node && (vap->va_mask & AT_MODE)) { 1266 1274 timestruc_t dummy; … … 1277 1285 mutex_exit(&sffs_lock); 1278 1286 if (node == NULL) 1279 { 1280 cmn_err(CE_NOTE, "sffs_create: sfnode_lookup() failed.\n"); 1281 return (EINVAL); 1282 } 1287 return (lookuperr); 1283 1288 *vpp = sfnode_get_vnode(node); 1284 1289 return (0); … … 1331 1336 1332 1337 sfnode_invalidate_stat_cache(VN2SFN(dvp)); 1333 1334 node = sfnode_lookup(VN2SFN(dvp), nm, VDIR, NULL, 0 );1338 int lookuperr = EACCES; 1339 node = sfnode_lookup(VN2SFN(dvp), nm, VDIR, NULL, 0, &lookuperr); 1335 1340 if (node && (va->va_mask & AT_MODE)) { 1336 1341 timestruc_t dummy; … … 1342 1347 } 1343 1348 1344 if (node ->sf_parent)1349 if (node && node->sf_parent) 1345 1350 sfnode_clear_dir_list(node->sf_parent); 1346 1351 1347 1352 mutex_exit(&sffs_lock); 1348 1353 if (node == NULL) 1349 return ( EACCES);1354 return (lookuperr); 1350 1355 *vpp = sfnode_get_vnode(node); 1351 1356 return (0); … … 1530 1535 goto done; 1531 1536 1532 node = sfnode_lookup(VN2SFN(old_dir), old_nm, VNON, NULL, 0 );1537 node = sfnode_lookup(VN2SFN(old_dir), old_nm, VNON, NULL, 0, NULL); 1533 1538 if (node == NULL) { 1534 1539 error = ENOENT;
Note:
See TracChangeset
for help on using the changeset viewer.