VirtualBox

Ignore:
Timestamp:
Jun 10, 2010 4:05:56 PM (15 years ago)
Author:
vboxsync
Message:

Linux shared folders: re-read the directory if a file was changed

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/linux/sharedfolders/utils.c

    r28998 r30150  
    642642}
    643643
     644void
     645sf_dir_info_empty(struct sf_dir_info *p)
     646{
     647        struct list_head *list, *pos, *tmp;
     648        TRACE ();
     649        list = &p->info_list;
     650        list_for_each_safe (pos, tmp, list) {
     651                struct sf_dir_buf *b;
     652                b = list_entry (pos, struct sf_dir_buf, head);
     653                b->nb_entries = 0;
     654                b->used_bytes = 0;
     655                b->free_bytes = 16384;
     656        }
     657}
     658
    644659struct sf_dir_info *
    645660sf_dir_info_alloc (void)
     
    659674
    660675static struct sf_dir_buf *
    661 sf_get_non_empty_dir_buf (struct sf_dir_info *sf_d)
     676sf_get_empty_dir_buf (struct sf_dir_info *sf_d)
    662677{
    663678        struct list_head *list, *pos;
     
    672687                }
    673688                else {
    674                         if (b->free_bytes > 0) {
     689                        if (b->used_bytes == 0) {
    675690                                return b;
    676691                        }
     
    695710        }
    696711
    697         b = sf_get_non_empty_dir_buf (sf_d);
    698712        for (;;) {
    699713                int rc;
     
    702716                uint32_t nb_ents;
    703717
     718                b = sf_get_empty_dir_buf (sf_d);
    704719                if (!b) {
    705720                        b = sf_dir_buf_alloc ();
     
    709724                                goto fail1;
    710725                        }
    711                 }
    712 
    713                 list_add (&b->head, &sf_d->info_list);
     726                        list_add (&b->head, &sf_d->info_list);
     727                }
    714728
    715729                buf = b->buf;
     
    747761                b->free_bytes -= buf_size;
    748762                b->used_bytes += buf_size;
    749                 b = NULL;
    750 
    751                 if (RT_FAILURE (rc)) {
     763
     764                if (RT_FAILURE (rc))
    752765                        break;
    753                 }
    754766        }
    755767        return 0;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette