]> git.proxmox.com Git - proxmox-backup.git/commitdiff
index file readers: aquire shared lock
authorDietmar Maurer <dietmar@proxmox.com>
Wed, 27 Mar 2019 09:11:14 +0000 (10:11 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Wed, 27 Mar 2019 09:11:14 +0000 (10:11 +0100)
src/backup/dynamic_index.rs
src/backup/fixed_index.rs

index 91994aa7ff21ec12857c0cd9a8305fda88f12cf3..2087b58c09cc471bea6c79de2fc0e14e05e37ebe 100644 (file)
@@ -58,6 +58,10 @@ impl DynamicIndexReader {
 
         let mut file = std::fs::File::open(&full_path)?;
 
+        if let Err(err) = nix::fcntl::flock(file.as_raw_fd(), nix::fcntl::FlockArg::LockSharedNonblock) {
+            bail!("unable to get shared lock on {:?} - {}", full_path, err);
+        }
+
         let header_size = std::mem::size_of::<DynamicIndexHeader>();
 
         // todo: use static assertion when available in rust
index 869ecbe953ce0fed37d6bd7e5f5b72aefd998d43..556fa1dfd06dfd0de79b028c10d63953b34c81fa 100644 (file)
@@ -57,6 +57,10 @@ impl FixedIndexReader {
 
         let mut file = std::fs::File::open(&full_path)?;
 
+        if let Err(err) = nix::fcntl::flock(file.as_raw_fd(), nix::fcntl::FlockArg::LockSharedNonblock) {
+            bail!("unable to get shared lock on {:?} - {}", full_path, err);
+        }
+
         let header_size = std::mem::size_of::<FixedIndexHeader>();
 
         // todo: use static assertion when available in rust