update nix to version 0.29

We will need this for the EventFd implementation. As this requires some
changes in the encoder code, do this as a separate commit.
diff --git a/Cargo.lock b/Cargo.lock
index be63a10..1071107 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -105,6 +105,12 @@
 checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
+name = "cfg_aliases"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
+
+[[package]]
 name = "crc32fast"
 version = "1.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -131,7 +137,7 @@
  "log",
  "matroska-demuxer",
  "md5",
- "nix",
+ "nix 0.29.0",
  "thiserror",
  "v4l2r",
 ]
@@ -319,6 +325,18 @@
 ]
 
 [[package]]
+name = "nix"
+version = "0.29.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
+dependencies = [
+ "bitflags 2.5.0",
+ "cfg-if",
+ "cfg_aliases",
+ "libc",
+]
+
+[[package]]
 name = "pkg-config"
 version = "0.3.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -444,13 +462,13 @@
 [[package]]
 name = "v4l2r"
 version = "0.0.2"
-source = "git+https://github.com/Gnurou/v4l2r?rev=1b5db8e#1b5db8e1bb98283d98b1edd2b2ace931b44c825c"
+source = "git+https://github.com/Gnurou/v4l2r?rev=a8b368b#a8b368b3c7c058523b4bb448064bfee325cbdff3"
 dependencies = [
  "anyhow",
  "bitflags 2.5.0",
  "enumn",
  "log",
- "nix",
+ "nix 0.27.1",
  "thiserror",
 ]
 
diff --git a/Cargo.toml b/Cargo.toml
index e4c602a..d001a4a 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -19,11 +19,11 @@
 bytes = "1.1.0"
 enumn = "0.1.4"
 libva = { git = "https://github.com/chromeos/cros-libva", rev = "843cef6", package = "cros-libva", optional = true }
-v4l2r = { git = "https://github.com/Gnurou/v4l2r", rev = "1b5db8e", package = "v4l2r", optional = true }
+v4l2r = { git = "https://github.com/Gnurou/v4l2r", rev = "a8b368b", package = "v4l2r", optional = true }
 log = { version = "0", features = ["release_max_level_debug"] }
 thiserror = "1.0.31"
 crc32fast = "1.3.2"
-nix = { version = "0.27", features = ["fs"] }
+nix = { version = "0.29", features = ["fs"] }
 
 [dev-dependencies]
 argh = "0.1"
diff --git a/src/backend/v4l2/encoder.rs b/src/backend/v4l2/encoder.rs
index ba24d7d..d4cd0e0 100644
--- a/src/backend/v4l2/encoder.rs
+++ b/src/backend/v4l2/encoder.rs
@@ -8,7 +8,6 @@
 use std::sync::Arc;
 
 use nix::sys::stat::fstat;
-use nix::sys::time::TimeVal;
 use thiserror::Error;
 use v4l2r::bindings::v4l2_streamparm;
 use v4l2r::controls::codec::VideoBitrate;
@@ -49,6 +48,8 @@
 use v4l2r::memory::PlaneHandle;
 use v4l2r::memory::PrimitiveBufferHandles;
 use v4l2r::memory::UserPtrHandle;
+use v4l2r::nix::errno::Errno;
+use v4l2r::nix::sys::time::TimeVal;
 use v4l2r::Format;
 use v4l2r::PixelFormat;
 use v4l2r::QueueDirection;
@@ -115,7 +116,7 @@
     EncoderStart(#[from] ioctl::EncoderCmdError),
 
     #[error(transparent)]
-    CreatePoller(nix::Error),
+    CreatePoller(v4l2r::nix::Error),
 
     #[error(transparent)]
     SetSelection(ioctl::SSelectionError),
@@ -127,7 +128,7 @@
 #[derive(Debug, Error)]
 pub struct ControlError {
     which: &'static str,
-    error: nix::errno::Errno,
+    error: Errno,
 }
 
 impl std::fmt::Display for ControlError {
@@ -406,7 +407,7 @@
             Ok(()) => (),
             Err(ioctl::ExtControlError {
                 error_idx: _,
-                error: ioctl::ExtControlErrorType::IoctlError(nix::errno::Errno::EINVAL),
+                error: ioctl::ExtControlErrorType::IoctlError(Errno::EINVAL),
             }) => {
                 log::debug!("Setting/getting {name} control is not supported for this device");
                 return Ok(());
@@ -431,7 +432,7 @@
             Ok(()) => (),
             Err(ioctl::ExtControlError {
                 error_idx: _,
-                error: ioctl::ExtControlErrorType::IoctlError(nix::errno::Errno::EINVAL),
+                error: ioctl::ExtControlErrorType::IoctlError(Errno::EINVAL),
             }) => {
                 log::debug!("Setting/getting {name} control is not supported for this device");
                 return Ok(());