9p.c (8762a46d3637f388fd9d2463dd966814522d5689) | 9p.c (f314ea4e30a1ef87bf8845da952c6dd0bac20b95) |
---|---|
1/* 2 * Virtio 9p backend 3 * 4 * Copyright IBM, Corp. 2010 5 * 6 * Authors: 7 * Anthony Liguori <aliguori@us.ibm.com> 8 * --- 217 unchanged lines hidden (view full) --- 226 int err = 1; 227 if (f->fid_type == P9_FID_FILE) { 228 if (f->fs.fd == -1) { 229 do { 230 err = v9fs_co_open(pdu, f, f->open_flags); 231 } while (err == -EINTR && !pdu->cancelled); 232 } 233 } else if (f->fid_type == P9_FID_DIR) { | 1/* 2 * Virtio 9p backend 3 * 4 * Copyright IBM, Corp. 2010 5 * 6 * Authors: 7 * Anthony Liguori <aliguori@us.ibm.com> 8 * --- 217 unchanged lines hidden (view full) --- 226 int err = 1; 227 if (f->fid_type == P9_FID_FILE) { 228 if (f->fs.fd == -1) { 229 do { 230 err = v9fs_co_open(pdu, f, f->open_flags); 231 } while (err == -EINTR && !pdu->cancelled); 232 } 233 } else if (f->fid_type == P9_FID_DIR) { |
234 if (f->fs.dir == NULL) { | 234 if (f->fs.dir.stream == NULL) { |
235 do { 236 err = v9fs_co_opendir(pdu, f); 237 } while (err == -EINTR && !pdu->cancelled); 238 } 239 } 240 return err; 241} 242 --- 97 unchanged lines hidden (view full) --- 340 int retval = 0; 341 342 if (fidp->fid_type == P9_FID_FILE) { 343 /* If we reclaimed the fd no need to close */ 344 if (fidp->fs.fd != -1) { 345 retval = v9fs_co_close(pdu, &fidp->fs); 346 } 347 } else if (fidp->fid_type == P9_FID_DIR) { | 235 do { 236 err = v9fs_co_opendir(pdu, f); 237 } while (err == -EINTR && !pdu->cancelled); 238 } 239 } 240 return err; 241} 242 --- 97 unchanged lines hidden (view full) --- 340 int retval = 0; 341 342 if (fidp->fid_type == P9_FID_FILE) { 343 /* If we reclaimed the fd no need to close */ 344 if (fidp->fs.fd != -1) { 345 retval = v9fs_co_close(pdu, &fidp->fs); 346 } 347 } else if (fidp->fid_type == P9_FID_DIR) { |
348 if (fidp->fs.dir != NULL) { | 348 if (fidp->fs.dir.stream != NULL) { |
349 retval = v9fs_co_closedir(pdu, &fidp->fs); 350 } 351 } else if (fidp->fid_type == P9_FID_XATTR) { 352 retval = v9fs_xattr_fid_clunk(pdu, fidp); 353 } 354 v9fs_path_free(&fidp->path); 355 g_free(fidp); 356 return retval; --- 81 unchanged lines hidden (view full) --- 438 f->ref++; 439 f->rclm_lst = reclaim_list; 440 reclaim_list = f; 441 f->fs_reclaim.fd = f->fs.fd; 442 f->fs.fd = -1; 443 reclaim_count++; 444 } 445 } else if (f->fid_type == P9_FID_DIR) { | 349 retval = v9fs_co_closedir(pdu, &fidp->fs); 350 } 351 } else if (fidp->fid_type == P9_FID_XATTR) { 352 retval = v9fs_xattr_fid_clunk(pdu, fidp); 353 } 354 v9fs_path_free(&fidp->path); 355 g_free(fidp); 356 return retval; --- 81 unchanged lines hidden (view full) --- 438 f->ref++; 439 f->rclm_lst = reclaim_list; 440 reclaim_list = f; 441 f->fs_reclaim.fd = f->fs.fd; 442 f->fs.fd = -1; 443 reclaim_count++; 444 } 445 } else if (f->fid_type == P9_FID_DIR) { |
446 if (f->fs.dir != NULL) { | 446 if (f->fs.dir.stream != NULL) { |
447 /* 448 * Up the reference count so that 449 * a clunk request won't free this fid 450 */ 451 f->ref++; 452 f->rclm_lst = reclaim_list; 453 reclaim_list = f; | 447 /* 448 * Up the reference count so that 449 * a clunk request won't free this fid 450 */ 451 f->ref++; 452 f->rclm_lst = reclaim_list; 453 reclaim_list = f; |
454 f->fs_reclaim.dir = f->fs.dir; 455 f->fs.dir = NULL; | 454 f->fs_reclaim.dir.stream = f->fs.dir.stream; 455 f->fs.dir.stream = NULL; |
456 reclaim_count++; 457 } 458 } 459 if (reclaim_count >= open_fd_rc) { 460 break; 461 } 462 } 463 /* --- 1414 unchanged lines hidden (view full) --- 1878 } 1879 trace_v9fs_readdir(pdu->tag, pdu->id, fid, initial_offset, max_count); 1880 1881 fidp = get_fid(pdu, fid); 1882 if (fidp == NULL) { 1883 retval = -EINVAL; 1884 goto out_nofid; 1885 } | 456 reclaim_count++; 457 } 458 } 459 if (reclaim_count >= open_fd_rc) { 460 break; 461 } 462 } 463 /* --- 1414 unchanged lines hidden (view full) --- 1878 } 1879 trace_v9fs_readdir(pdu->tag, pdu->id, fid, initial_offset, max_count); 1880 1881 fidp = get_fid(pdu, fid); 1882 if (fidp == NULL) { 1883 retval = -EINVAL; 1884 goto out_nofid; 1885 } |
1886 if (!fidp->fs.dir) { | 1886 if (!fidp->fs.dir.stream) { |
1887 retval = -EINVAL; 1888 goto out; 1889 } 1890 if (initial_offset == 0) { 1891 v9fs_co_rewinddir(pdu, fidp); 1892 } else { 1893 v9fs_co_seekdir(pdu, fidp, initial_offset); 1894 } --- 1485 unchanged lines hidden --- | 1887 retval = -EINVAL; 1888 goto out; 1889 } 1890 if (initial_offset == 0) { 1891 v9fs_co_rewinddir(pdu, fidp); 1892 } else { 1893 v9fs_co_seekdir(pdu, fidp, initial_offset); 1894 } --- 1485 unchanged lines hidden --- |