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 ---