On Tue, Mar 11, 2025 at 09:00:10PM +0100, Hiltjo Posthuma wrote: > On Thu, Mar 06, 2025 at 07:01:44PM +0000, Stuart Henderson wrote: > > On 2025/03/06 18:45, Hiltjo Posthuma wrote: > > > In the following commit the sysctl kern.usermount=1 was removed: > > > > > > https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/kern/kern_sysctl.c?rev=1.306&content-type=text/x-cvsweb-markup > > > > > > What is the alternative to run FUSE safely as non-root now? It seems > > > ports > > > like sshfs, curlftps etc cannot run as a user now? > > > > There isn't one. (And fuse is a bit of a dead-end on OpenBSD anyway, we > > have always been a bit incompatible anyway, and the fuse 3 compatible > > code that was written never made it into the tree). > > > > > Feel free to use the above changes into usmb if you want. > > > > a set of "I changed this and this and this" instructions isn't > > particularly helpful for getting something into a port.. > > Yes, sorry, below is a patch that changes the following: > > * Change the block size from the 512 bytes default to 32768 for files (struct > stat.st_blksize). > * Remove max_read FUSE limit option. > * Remove the maximum 32768 bytes per write limitation (the smbclient code > handles this just fine). > > Thank you, > > > diff --git a/sysutils/usmb/Makefile b/sysutils/usmb/Makefile > index f10c062979a..3f7fcc47264 100644 > --- a/sysutils/usmb/Makefile > +++ b/sysutils/usmb/Makefile > @@ -1,7 +1,7 @@ > COMMENT= mount SMB shares from userland via FUSE > > DISTNAME= usmb-20130204 > -REVISION= 7 > +REVISION= 8 > > CATEGORIES= sysutils > > diff --git a/sysutils/usmb/patches/patch-options_c > b/sysutils/usmb/patches/patch-options_c > new file mode 100644 > index 00000000000..e293d27457b > --- /dev/null > +++ b/sysutils/usmb/patches/patch-options_c > @@ -0,0 +1,21 @@ > +Index: options.c > +--- options.c.orig > ++++ options.c > +@@ -149,7 +149,6 @@ > + static char MINUS_D[] = "-d"; > + static char MINUS_F[] = "-f"; > + static char MINUS_O[] = "-o"; > +- static char MAX_READ[] = "max_read=32768"; > + > + assert (NULL != mountpoint); > + static char *argv[MAXARGS]; > +@@ -167,9 +166,6 @@ > + if (nofork) > + #endif > + argv[argc++] = MINUS_F; > +- > +- argv[argc++] = MINUS_O; > +- argv[argc++] = MAX_READ; > + > + if ((NULL != options) && ('\0' != options[0])) > + { > diff --git a/sysutils/usmb/patches/patch-usmb_file_c > b/sysutils/usmb/patches/patch-usmb_file_c > index 8e16874813c..714eaf71cbf 100644 > --- a/sysutils/usmb/patches/patch-usmb_file_c > +++ b/sysutils/usmb/patches/patch-usmb_file_c > @@ -1,10 +1,75 @@ > Index: usmb_file.c > --- usmb_file.c.orig > +++ usmb_file.c > -@@ -202,6 +202,30 @@ int usmb_write (const char *filename UNUSED, const cha > +@@ -60,7 +60,18 @@ > + return (NULL == dirent); > } > > ++static bool change_blksiz(struct stat *st) > ++{ > ++ if (st == NULL) > ++ return false; > + > ++ if (S_ISREG(st->st_mode)) { > ++ st->st_blksize = 32768; > ++ return true; > ++ } > ++ return false; > ++} > ++ > + int usmb_getattr (const char *filename, struct stat *st) > + { > + char *url = make_url (filename); > +@@ -74,6 +85,8 @@ > + if ((0 > ret) || !fix_nlink (url, st)) > + ret = -errno; > + > ++ change_blksiz(st); > ++ > + free (url); > + return ret; > + } > +@@ -101,6 +114,8 @@ > + return -errno; > + } > + > ++ change_blksiz(st); > ++ > + return 0; > + } > + > +@@ -147,8 +162,6 @@ > + int usmb_read (const char *filename UNUSED, char *buff, size_t len, off_t > off, > + struct fuse_file_info *fi) > + { > +- assert (32768 >= len); > +- > + SMBCFILE *file = fd_to_smbcfile (fi->fh); > + DEBUG (fprintf (stderr, "read (%p, %p, %llu, %lld) ", > + (void *)file, buff, (unsigned long long)len, (long > long)off)); > +@@ -178,14 +191,11 @@ > + size_t written = 0; > + int bytes = 0; > + > +- // No idea whether Windows servers don't like > 32768 byte writes > +- // (cf. usmb_read), but taking no chances... > +- > + const smbc_write_fn write_fn = smbc_getFunctionWrite (ctx); > + > + while (written < len) > + { > +- bytes = write_fn (ctx, file, (char *)buff, (len > 32768) ? 32768 : len); > ++ bytes = write_fn (ctx, file, (char *)buff, len); > + if (0 > bytes) > + break; > + > +@@ -199,6 +209,30 @@ > > + DEBUG (fprintf (stderr, "= %d\n", (0 > bytes) ? -errno : (int)written)); > + return (0 > bytes) ? -errno : (int)written; > ++} > ++ > ++ > +/* File systems must support mknod on OpenBSD */ > +int usmb_mknod (const char *filename, mode_t mode, __attribute__((unused)) > dev_t dev) > +{ > @@ -26,9 +91,4 @@ Index: usmb_file.c > + smbc_getFunctionClose (ctx) (ctx, file); > + free (url); > + return ret; > -+} > -+ > -+ > - int usmb_create (const char *filename, mode_t mode, struct fuse_file_info > *fi) > - { > - char *url = make_url (filename); > + } >
Bump! Can someone update this or give thoughts if theres anything wrong with the latest patch? Thank you, -- Kind regards, Hiltjo