diff --git a/exts/devmaster/src/lib/builtin/blkid.rs b/exts/devmaster/src/lib/builtin/blkid.rs index b5eaf8bd2d1a1d064b06eb91ad40ea27561fc64a..a66bbb56f54bfe9dbbe32a202e577cfc536bd7dd 100644 --- a/exts/devmaster/src/lib/builtin/blkid.rs +++ b/exts/devmaster/src/lib/builtin/blkid.rs @@ -375,6 +375,23 @@ impl Builtin for Blkid { argv: Vec, test: bool, ) -> Result { + let subsystem = device + .lock() + .map_err(op_command_err!("device lock error"))? + .get_subsystem() + .map_err(op_command_err!("device get_subsystem error"))?; + + if subsystem != *"block" { + let syspath = device + .lock() + .map_err(op_command_err!("device lock error"))? + .get_syspath() + .map_err(op_command_err!("device get_syspath error"))? + .to_string(); + log::warn!("blkid can only probe block devices, ignoring {syspath}"); + return Ok(false); + } + let args = Args::try_parse_from(argv).map_err(op_command_err!("parse argv error"))?; if !args.is_set_offset() { return Err(Error::BuiltinCommandError {