042babe4e7 
					 
					
						
						
							
							src/tools/fs.rs: impl ioctl calls to get/set fsxattr  
						
						... 
						
						
						
						This implements fs_ioc_fsgetxattr/fs_ioc_fssetxattr calls in order to read or
write fsxattr for a given file descriptor.
This is needed in order to read or write the quota project id for filesystems
which support project quotas (EXT4/XFS/FUSE).
Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-06-05 06:22:49 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						390e83c9b9 
					 
					
						
						
							
							typo fix and doc improvement  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com > 
						
						
					 
					
						2019-05-29 11:57:28 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						7fb49397d5 
					 
					
						
						
							
							doc fixup  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com > 
						
						
					 
					
						2019-05-29 11:56:14 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						382609b04e 
					 
					
						
						
							
							tools: add Cancellable, start a futures submodule  
						
						... 
						
						
						
						To make a future cancellable, use:
let (future, canceller) =
    crate::tools::futures::cancellable(future);
Proceed with using `future` as usual, `canceller` is
clonable and can cancel the future via the `.cancel()`
method.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com > 
						
						
					 
					
						2019-05-29 11:18:29 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						0d32d71fb7 
					 
					
						
						
							
							tools: add AsyncMutex::new_locked  
						
						... 
						
						
						
						Allows creating a pre-locked mutex, returning the mutex and
a guard.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com > 
						
						
					 
					
						2019-05-29 11:18:29 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						687407741b 
					 
					
						
						
							
							src/tools/xattr.rs: add test for is_valid_xattr_name()  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-05-24 06:11:36 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						357e4614e2 
					 
					
						
						
							
							Minor refactoring of pxars xattr encoder/decoder, mostly reformatting and renaming.  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-05-24 06:11:36 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						c05a8c8d18 
					 
					
						
						
							
							doc-test fixup  
						
						... 
						
						
						
						cargo test by default compiles and runs all code snippets
found in the documentation...
oops...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com > 
						
						
					 
					
						2019-05-23 15:22:33 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						8ea3b1d188 
					 
					
						
						
							
							tree-wide: use the new vec/io tools modules  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com > 
						
						
					 
					
						2019-05-23 09:49:10 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						9cdda3f7c7 
					 
					
						
						
							
							tools: add helpful vector and read operations  
						
						... 
						
						
						
						After importing the I/O ops trait via:
    use crate::tools::io::ops::*;
Instead of:
    let mut buffer = vec![0u8; 65536];
    file.read_exact(&mut buffer)?;
use:
    let buffer = file.read_exact_allocated(65536)?;
After importing the vector helpers via:
    use crate::tools::vec::{self, ops::*};
For a buffer which *could* be uninitialized but you prefer
zero-initialization anyway for security reasons, instead of:
    let mut buffer = vec![0u8; len];
use:
    let mut buffer = vec::undefined(len);
which zero-initializes, but, if the `valgrind` feature flag
is enabled, marks the vector as having undefined contents,
so reading from it will cause valgrind errors.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com > 
						
						
					 
					
						2019-05-23 09:49:10 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						de61bc9264 
					 
					
						
						
							
							src/tools/xattr.rs: impl unit tests for fsetattr and fgetattr  
						
						... 
						
						
						
						As git does not preserve xattrs they have to be set before they can be read.
Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-05-22 10:01:10 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						bee8d8ea78 
					 
					
						
						
							
							src/tools/xattr.rs: add functions name_store and security_capability  
						
						... 
						
						
						
						These functions allow to check if the name for xattrs/fcaps are valid.
Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-05-21 06:05:31 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						2dcdd3b427 
					 
					
						
						
							
							src/tools/xattrs.rs: impl libc wrapper functions to get/set xattrs and fcaps  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-05-16 11:14:21 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						dec1ff18b8 
					 
					
						
						
							
							src/tools/acl.rs: impl add_entry_full for ACL and set_permissions for ACLEntry  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-05-16 11:10:06 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						d22096ef4b 
					 
					
						
						
							
							src/tools/acl.rs: impl POSIX access control list (ACL) manipulation tools  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-05-14 06:28:42 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						824b5ee4ee 
					 
					
						
						
							
							src/tools/broadcast_future.rs: cleanup, decompose into two classes  
						
						... 
						
						
						
						In order to make it more usable. 
						
						
					 
					
						2019-04-30 08:57:20 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						d82ed9b0f5 
					 
					
						
						
							
							tools: add AsyncMutex  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com > 
						
						
					 
					
						2019-04-29 14:19:03 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						3dceb9b304 
					 
					
						
						
							
							src/tools/broadcast_future.rs: add new constructor new_oneshot()  
						
						... 
						
						
						
						To simplify usage. Also added a test case. 
						
						
					 
					
						2019-04-27 10:56:49 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						490be29ed6 
					 
					
						
						
							
							src/tools/broadcast_future.rs: new helper class  
						
						
						
						
					 
					
						2019-04-26 17:57:57 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						8b7c0def84 
					 
					
						
						
							
							src/tools/procfs.rs: clean up tab indentation and use whitespaces instead  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-04-25 13:14:52 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						5e5eed5c3b 
					 
					
						
						
							
							use double-fork for reload  
						
						... 
						
						
						
						To ensure the new process' parent is pid 1, so systemd won't
complain about supervising a process it does not own.
Fixes the following log spam on reloads:
Apr 25 10:50:54 deb-dev systemd[1]: proxmox-backup.service: Supervising process 1625 which is not our child. We'll most likely not notice when it exits.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com > 
						
						
					 
					
						2019-04-25 11:02:12 +00:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						897982e237 
					 
					
						
						
							
							tools: add read/write convenience helpers  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com > 
						
						
					 
					
						2019-04-25 11:02:12 +00:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						d98c9a7a38 
					 
					
						
						
							
							use service Type=notify  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com > 
						
						
					 
					
						2019-04-25 11:01:33 +00:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						9c351a36c4 
					 
					
						
						
							
							tools/daemon: add sd_notify wrapper  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com > 
						
						
					 
					
						2019-04-25 11:01:28 +00:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						d8871f2f18 
					 
					
						
						
							
							src/tools/procfs.rs: avoid useless allocations  
						
						
						
						
					 
					
						2019-04-24 09:35:15 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						ae694f44ef 
					 
					
						
						
							
							src/tools/procfs.rs: add tests for read_proc_net_route() and read_proc_net_ipv6_route()  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-04-24 06:43:52 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						ec8db837fb 
					 
					
						
						
							
							src/tools/procfs.rs: refactor read_proc_net_route() and read_proc_net_ipv6_route()  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-04-24 06:43:32 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						eb46c3d1ec 
					 
					
						
						
							
							src/tools/procfs.rs: implement read_proc_net_ipv6_route()  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-04-23 14:31:23 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						286f0d4099 
					 
					
						
						
							
							src/tools/procfs.rs: implement read_proc_net_route()  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-04-15 11:13:16 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						d2981e2738 
					 
					
						
						
							
							src/tools/procfs.rs: implement read_proc_net_dev()  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-04-13 11:52:59 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						13abfdc57a 
					 
					
						
						
							
							src/tools/procfs.rs: implement read_memory_usage()  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-04-13 11:52:01 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						3005ef48b6 
					 
					
						
						
							
							src/tools/procfs.rs: Rename variable and struct to be more consistent  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-04-12 12:13:34 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						cc93bacb72 
					 
					
						
						
							
							src/tools/procfs.rs: simplify read_cpuinfo()  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-04-12 12:13:14 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						620dccf1a1 
					 
					
						
						
							
							tools/daemon: dup the TcpListener file descriptor  
						
						... 
						
						
						
						Now that we let hyper shutdown gracefully we need an owned
version of the listening socket to prevent it from closing
before running the reload preparations.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com > 
						
						
					 
					
						2019-04-10 15:20:10 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						1cd33633aa 
					 
					
						
						
							
							/src/tools: Cleanup tempfiles in folder  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-04-10 13:56:22 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						2b6a3e1396 
					 
					
						
						
							
							src/tools/procfs.rs: implement read_cpuinfo()  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-04-10 13:11:11 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						5f550fd99f 
					 
					
						
						
							
							start hyper server using with_graceful_shutdown()  
						
						... 
						
						
						
						Without, hyper keeps some futures running, and the server does not
correctly shutdown. 
						
						
					 
					
						2019-04-10 08:24:32 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						7f2078de59 
					 
					
						
						
							
							src/tools/procfs.rs: avoid compiler warning  
						
						
						
						
					 
					
						2019-04-10 06:40:29 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						1f6fbf1c57 
					 
					
						
						
							
							src/tools/procfs.rs: implement read_meminfo()  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-04-09 15:21:49 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						e3f41f2165 
					 
					
						
						
							
							src/tools/daemon.rs: use new ServerState handler  
						
						
						
						
					 
					
						2019-04-08 14:00:23 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						eea8131952 
					 
					
						
						
							
							src/tools.rs: implement file_set_contents_full()  
						
						
						
						
					 
					
						2019-04-06 13:53:43 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						244abab769 
					 
					
						
						
							
							src/tools/file_logger.rs: fix test  
						
						
						
						
					 
					
						2019-04-06 11:24:37 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						a2474d328f 
					 
					
						
						
							
							src/tools/procfs.rs: implement read_proc_uptime and read_proc_uptime_ticks  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-04-05 06:22:21 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						08daa81af6 
					 
					
						
						
							
							procfs: implement check_process_running and check_process_running_pstart  
						
						... 
						
						
						
						Signed-off-by: Christian Ebner <c.ebner@proxmox.com > 
						
						
					 
					
						2019-04-04 13:54:17 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						79ad7b7ec2 
					 
					
						
						
							
							src/tools/procfs.rs: split regex into several lines  
						
						
						
						
					 
					
						2019-04-04 09:25:19 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						52ddc2522d 
					 
					
						
						
							
							src/tools/procfs.rs: use libc::pid_t  
						
						
						
						
					 
					
						2019-04-04 08:05:43 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						d3d7ab1273 
					 
					
						
						
							
							src/tools/file_logger.rs: new - accept AsRef<Path>  
						
						
						
						
					 
					
						2019-04-03 14:13:33 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						3c2012f97a 
					 
					
						
						
							
							src/tools/procfs.rs: start helper tools to read procfs  
						
						
						
						
					 
					
						2019-04-03 13:39:20 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						3489936ebb 
					 
					
						
						
							
							src/tools/file_logger.rs: change timestamp format to rfc3339  
						
						
						
						
					 
					
						2019-04-03 08:58:43 +02:00 
						 
				 
			
				
					
						
					 
					
						
						
							
						
						9136f857cc 
					 
					
						
						
							
							add global var to indicate server shutdown requests  
						
						
						
						
					 
					
						2019-04-01 12:05:11 +02:00