FS/XFS testing framework
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <djwong@kernel.org>
To: Andrey Albershteyn <aalbersh@kernel.org>
Cc: fstests@vger.kernel.org
Subject: Re: [PATCH] generic/791: don't run if kernel misses FANOTIFY
Date: Wed, 20 May 2026 07:55:21 -0700	[thread overview]
Message-ID: <20260520145521.GK9568@frogsfrogsfrogs> (raw)
In-Reply-To: <20260520133719.573809-1-aalbersh@kernel.org>

On Wed, May 20, 2026 at 03:37:15PM +0200, Andrey Albershteyn wrote:
> If FANOTIFY=no in the kernel, then fs-monitor will fail to start. Fix
> fs-monitor error codes to detect and skip the test on "Function not
> implemented" code.
> 
> Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
> ---
>  src/fs-monitor.c  |  9 ++++++---
>  tests/generic/791 | 10 +++++++++-
>  2 files changed, 15 insertions(+), 4 deletions(-)
> 
> diff --git a/src/fs-monitor.c b/src/fs-monitor.c
> index 0cf09677a3ef..28436ec2336f 100644
> --- a/src/fs-monitor.c
> +++ b/src/fs-monitor.c
> @@ -117,6 +117,7 @@ next_event:
>  int main(int argc, char **argv)
>  {
>  	int fd;
> +	int error;
>  
>  	char buffer[BUFSIZ];
>  
> @@ -126,15 +127,17 @@ int main(int argc, char **argv)
>  	}
>  
>  	fd = fanotify_init(FAN_CLASS_NOTIF|FAN_REPORT_FID, O_RDONLY);
> +	error = errno;
>  	if (fd < 0) {
>  		perror("fanotify_init");
> -		errx(1, "fanotify_init");
> +		errx(error, "fanotify_init");
>  	}
>  
>  	if (fanotify_mark(fd, FAN_MARK_ADD|FAN_MARK_FILESYSTEM,
>  			  FAN_FS_ERROR, AT_FDCWD, argv[1])) {
> +		error = errno;
>  		perror("fanotify_mark");
> -		errx(1, "fanotify_mark");
> +		errx(errno, "fanotify_mark");
>  	}
>  
>  	printf("fanotify active\n");
> @@ -144,7 +147,7 @@ int main(int argc, char **argv)
>  		int n = read(fd, buffer, BUFSIZ);
>  
>  		if (n < 0)
> -			errx(1, "read");
> +			errx(errno, "read");
>  
>  		handle_notifications(buffer, n);
>  	}
> diff --git a/tests/generic/791 b/tests/generic/791
> index 90242292cba2..1d3a6c181011 100755
> --- a/tests/generic/791
> +++ b/tests/generic/791
> @@ -123,10 +123,18 @@ fi
>  _dmerror_unmount
>  _dmerror_mount
>  
> -$here/src/fs-monitor $SCRATCH_MNT > $tmp.fsmonitor &
> +$here/src/fs-monitor $SCRATCH_MNT > $tmp.fsmonitor 2>&1 &
>  fsmonitor_pid=$!
>  sleep 1
>  
> +if ! kill -0 $fsmonitor_pid 2>/dev/null; then
> +	wait $fsmonitor_pid
> +	# Function not implemented
> +	if [ $? -eq 38 ]; then

error numbers aren't the same across architectures, so you generally
have to strerror/perror and grep for that in the output.

Alternately we could add a getopt loop to main() so that you could pass
in a --check that would do the setup and exit(0) just before the while
loop; and then you could add:

$here/src/fs-monitor $SCRATCH_MNT --check &> /dev/null || \
	_notrun "fanotify too old"

--D

> +		_notrun "Kernel doesn't support fanotify"
> +	fi
> +fi
> +
>  _dmerror_mark_range_bad $bad_sector $bad_len
>  
>  cat >> $seqres.full << ENDL
> -- 
> 2.51.2
> 

      reply	other threads:[~2026-05-20 14:55 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-20 13:37 [PATCH] generic/791: don't run if kernel misses FANOTIFY Andrey Albershteyn
2026-05-20 14:55 ` Darrick J. Wong [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260520145521.GK9568@frogsfrogsfrogs \
    --to=djwong@kernel.org \
    --cc=aalbersh@kernel.org \
    --cc=fstests@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox