X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=daemon%2Fsync.c;h=bde181febd5cba0d8b2fb54028894672e6b1149b;hp=37e8faab146bd7f9a5b0407d523368134703f008;hb=9ba779ea367b2ea7077da7bdd75e813cd06c7eea;hpb=34ac5d7b7ad068319169410d293495d789893350 diff --git a/daemon/sync.c b/daemon/sync.c index 37e8faa..bde181f 100644 --- a/daemon/sync.c +++ b/daemon/sync.c @@ -1,5 +1,5 @@ /* libguestfs - the guestfsd daemon - * Copyright (C) 2009 Red Hat Inc. + * Copyright (C) 2009-2011 Red Hat Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -13,7 +13,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include @@ -43,6 +43,24 @@ do_sync (void) return 0; } +/* Older versions of libguestfs used to issue separate 'umount_all' + * and 'sync' commands just before closing the handle. Since + * libguestfs 1.9.7 the library issues this 'internal_autosync' + * internal operation instead, allowing more control in the daemon. + */ +int +do_internal_autosync (void) +{ + int r = 0; + + if (autosync_umount) + r = do_umount_all (); + + sync_disks (); + + return r; +} + /* This is a replacement for sync(2) which is called from * this file and from other places in the daemon. It works * on Windows too. @@ -85,9 +103,6 @@ sync_win32 (void) HANDLE drive; DWORD drive_type; - if (verbose) - fprintf (stderr, "sync_win32: examining drive %s\n", p); - /* Ignore removable drives. */ drive_type = GetDriveType (p); if (drive_type == DRIVE_FIXED) { @@ -97,15 +112,13 @@ sync_win32 (void) */ TCHAR volname[50]; if (!GetVolumeNameForVolumeMountPoint (p, volname, 50)) - return -1; + return -1; drive = CreateFile (volname, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0); if (drive == INVALID_HANDLE_VALUE) return -1; - if (verbose) - fprintf (stderr, "sync_win32: flushing %s\n", volname); BOOL r; /* This always fails in Wine: