GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
GETINODE(3) FreeBSD Library Functions Manual GETINODE(3)

getinode, putinode
fetch and store inodes on a UFS file system

UFS File System Access Library (libufs, -lufs)

#include <ufs/ufs/dinode.h>
#include <ufs/ffs/fs.h>
#include <libufs.h>

int
getinode(struct uufsd *disk, union dinodep *dp, ino_t inumber);

int
putinode(struct uufsd *disk);

The getinode() and putinode() functions provide an inode fetch and store API for libufs(3) consumers. They operate on a userland UFS disk structure. The getinode() function fetches the specified inode from the filesystem. The putinode() function stores the most recently fetched inode to the filesystem.

The dinodep union is defined as:

union dinodep {
	struct ufs1_dinode *dp1;
	struct ufs2_dinode *dp2;
};

Sample code to clear write permissions for inode number inumber stored on the filesystem described by diskp.

#include <sys/stat.h>
#include <err.h>

#include <ufs/ufs/dinode.h>
#include <ufs/ffs/fs.h>
#include <libufs.h>

void
clearwrite(struct uufsd *diskp, ino_t inumber)
{
	union dinodep dp;

	if (getinode(diskp, &dp, inumber) == -1)
		err(1, "getinode: %s", diskp->d_error);
	switch (diskp->d_ufs) {
	case 1: /* UFS 1 filesystem */
		dp.dp1->di_mode &= ~(S_IWUSR | S_IWGRP | S_IWOTH);
		break;
	case 2: /* UFS 2 filesystem */
		dp.dp2->di_mode &= ~(S_IWUSR | S_IWGRP | S_IWOTH);
		break;
	default:
		errx(1, "unknown filesystem type");
	}
	if (putinode(diskp) == -1)
		err(1, "putinode: %s", diskp->d_error);
}

The getinode() and putinode() functions return 0 on success, or -1 in case of any error. A string describing the error is stored in diskp->d_error. The global errno often provides additional information.

The function getinode() may fail and set errno for any of the errors specified for the library function pread(2). It can also fail if the inode number is out of the range of inodes in the filesystem.

The function putinode() may fail and set errno for any of the errors specified for the library functions ufs_disk_write(3) or pwrite(2).

Additionally both functions may follow the libufs(3) error methodologies in case of a device error.

pread(2), pwrite(2), libufs(3), ufs_disk_write(3)

These functions first appeared as part of libufs(3) in FreeBSD 13.0.

Marshall Kirk McKusick <mckusick@FreeBSD.org>
September 2, 2020 FreeBSD 13.1-RELEASE

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.