diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2012-12-14 10:45:29 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2012-12-14 10:45:29 +0000 |
commit | 05297cca5fe43585ba7f8b6299d318b8b31b634a (patch) | |
tree | 36ab6968209c5f6c4a5fb2344dbf313f68612720 /winsup/cygwin/mount.cc | |
parent | 60f901f4a9e7ab9e6030cc38f297b140233640ea (diff) | |
download | newlib-05297cca5fe43585ba7f8b6299d318b8b31b634a.zip newlib-05297cca5fe43585ba7f8b6299d318b8b31b634a.tar.gz newlib-05297cca5fe43585ba7f8b6299d318b8b31b634a.tar.bz2 |
* fhandler.cc (fhandler_base::write): Don't attempt to sparsify
an already sparse file. Drop check for FILE_SUPPORTS_SPARSE_FILES
flag. Explicitely set FILE_ATTRIBUTE_SPARSE_FILE attribute in
cached attributes.
(fhandler_base::lseek): Only set did_lseek if sparseness is supported.
* fhandler_disk_file.cc (fhandler_disk_file::ftruncate): Don't attempt
to sparsify an already sparse file. Explicitely set
FILE_ATTRIBUTE_SPARSE_FILE attribute in cached attributes.
* mount.cc (oopt): Add "sparse" flag.
(fillout_mntent): Ditto.
* path.h (enum path_types): Add PATH_SPARSE.
(path_conv::support_sparse): New method.
(path_conv::fs_flags): Constify.
(path_conv::fs_name_len): Ditto.
include/sys/mount.h: Replace unused MOUNT_MIXED flag with MOUNT_SPARSE.
Diffstat (limited to 'winsup/cygwin/mount.cc')
-rw-r--r-- | winsup/cygwin/mount.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc index 70603d7..160fc4d 100644 --- a/winsup/cygwin/mount.cc +++ b/winsup/cygwin/mount.cc @@ -1028,6 +1028,7 @@ struct opt {"override", MOUNT_OVERRIDE, 0}, {"posix=0", MOUNT_NOPOSIX, 0}, {"posix=1", MOUNT_NOPOSIX, 1}, + {"sparse", MOUNT_SPARSE, 0}, {"text", MOUNT_BINARY, 1}, {"user", MOUNT_SYSTEM, 1} }; @@ -1667,6 +1668,9 @@ fillout_mntent (const char *native_path, const char *posix_path, unsigned flags) if (flags & MOUNT_NOPOSIX) strcat (_my_tls.locals.mnt_opts, (char *) ",posix=0"); + if (flags & MOUNT_SPARSE) + strcat (_my_tls.locals.mnt_opts, (char *) ",sparse"); + if (!(flags & MOUNT_SYSTEM)) /* user mount */ strcat (_my_tls.locals.mnt_opts, (char *) ",user"); |