From nobody Tue Apr 18 23:13:59 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Q1KVb71FJz45qLJ; Tue, 18 Apr 2023 23:13:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Q1KVb51dPz4DYH; Tue, 18 Apr 2023 23:13:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1681859639; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AJ84XZr2qWYH1W1x4W4Vd1qi4Ehdj0qPSq53U82zJKE=; b=YEBducK9l4vsyWKPPfxvRh3eGZ7oGsQgx8wgWoomhLR4yo6NdJJYr8A0vt07JTXhvq7K/a exojV7t6Sgg6sdcknOroklx1ubVYpZ8Q55QEFCM8CcNgtCEkstu/xA8Tbu6g4/tqiGsXVP JRbT3PItIwqySC10Wat7gr1shpZrgLFGW+Vzha1xGoM1r7IvVNZvvjYSGyi/WpVV7xqYDb t4jczlhXjuQho/CYzT7OtcqOQ+oYKuKxxV7JYGZcfKmJj6qf2AW/wngPH/XYic52/HB0Ri vhF9DBz/8hRYw9jzsVHNxSB2b3pjCX7ergnWBOPkE/wPHuh2VxkeopW1BJqQqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1681859639; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AJ84XZr2qWYH1W1x4W4Vd1qi4Ehdj0qPSq53U82zJKE=; b=kVfD7bG56duNTtr0NARokgXElwhZPXCy49WOg59q8YdYu9XvPMHlf4PwSH8wOCDPiin1Is yV2NL+LIVfLqtbT4eE6z6GyYU6ovEO3Vzdp21J00kJppKBUdwCTzSunZIzN0bllxgCpOwG wmZ6iVxxXT7eotY10HhqlcP8jyq953ctEdVEK5iT4kYsymrLR6NK1VkRWl3EAzKeFbVtbB KRyfqOTQ8ArwBm6q2VQJwFpgFUcd9ZNw2MJduh9sqKR4TZv/T3f+MSVamjo210RMQ4g+qB eyGwQtDCgaMcldkBr0yfQJbvesZGmUnk+wunNNL5rMuzmR3RyuuTy2NjvpBbow== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1681859639; a=rsa-sha256; cv=none; b=c9CIoU7VWbDi1GIU1RDu2IFBV8kVx5l6usUXtM0W15/8twsy8L6yxAZlXrir5hjRDNQlsT P5lyjy/HUERTtSgyHt0TKKIktgfXGc0TDAGuPilcV+d4iRk1TFUXL3Yu6TuBLVtiIl7O3m KTHEgfha2wKlDakDrWgZ0fmUpFczDAK9OglF8vbNLi/0h0zjTDkhU/YoUAyGKaOYdCsqWT XJBhBPcQuBbScpMCUU0O610qFUcP5Nx6aeE9td6xko6PIvbW3NCSX3OyrGPncAL7v3SE09 1Ytw9NkDmmssfR9jfxN0TL36eQUF3I6KcuZOB76iwimqdVTWIX/6aZfIg8tA6A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Q1KVb46Q9zWrS; Tue, 18 Apr 2023 23:13:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 33INDx3P095370; Tue, 18 Apr 2023 23:13:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 33INDxJW095369; Tue, 18 Apr 2023 23:13:59 GMT (envelope-from git) Date: Tue, 18 Apr 2023 23:13:59 GMT Message-Id: <202304182313.33INDxJW095369@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kirk McKusick Subject: git: 7636973c68f1 - main - Add `chdb' command to fsdb(8) to set direct block numbers. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mckusick X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7636973c68f15419a71bc8e4253b2fbae3258025 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mckusick: URL: https://cgit.FreeBSD.org/src/commit/?id=7636973c68f15419a71bc8e4253b2fbae3258025 commit 7636973c68f15419a71bc8e4253b2fbae3258025 Author: Kirk McKusick AuthorDate: 2023-04-18 05:42:32 +0000 Commit: Kirk McKusick CommitDate: 2023-04-18 23:13:26 +0000 Add `chdb' command to fsdb(8) to set direct block numbers. Add the ability to set direct blocks numbers in inodes so that manual corrections can be made. No checking of the values is attempted so accidental or deliberate bad values can be set. Submitted by: Chuck Silvers MFC after: 1 week --- sbin/fsdb/fsdb.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/sbin/fsdb/fsdb.c b/sbin/fsdb/fsdb.c index a7d3a439b6b3..887a77dbb8cb 100644 --- a/sbin/fsdb/fsdb.c +++ b/sbin/fsdb/fsdb.c @@ -161,6 +161,7 @@ CMDFUNC(chatime); /* Change atime */ CMDFUNC(chinum); /* Change inode # of dirent */ CMDFUNC(chname); /* Change dirname of dirent */ CMDFUNC(chsize); /* Change size */ +CMDFUNC(chdb); /* Change direct block pointer */ struct cmdtable cmds[] = { { "help", "Print out help", 1, 1, FL_RO, helpfn }, @@ -195,6 +196,7 @@ struct cmdtable cmds[] = { { "mtime", "Change mtime of current inode to MTIME", 2, 2, FL_WR, chmtime }, { "ctime", "Change ctime of current inode to CTIME", 2, 2, FL_WR, chctime }, { "atime", "Change atime of current inode to ATIME", 2, 2, FL_WR, chatime }, + { "chdb", "Change db pointer N of current inode to BLKNO", 3, 3, FL_WR, chdb }, { "quit", "Exit", 1, 1, FL_RO, quit }, { "q", "Exit", 1, 1, FL_RO, quit }, { "exit", "Exit", 1, 1, FL_RO, quit }, @@ -1046,6 +1048,36 @@ CMDFUNCSTART(chsize) return rval; } +CMDFUNC(chdb) +{ + unsigned int idx; + daddr_t bno; + char *cp; + + if (!checkactive()) + return 1; + + idx = strtoull(argv[1], &cp, 0); + if (cp == argv[1] || *cp != '\0') { + warnx("bad pointer idx `%s'", argv[1]); + return 1; + } + bno = strtoll(argv[2], &cp, 0); + if (cp == argv[2] || *cp != '\0') { + warnx("bad block number `%s'", argv[2]); + return 1; + } + if (idx >= UFS_NDADDR) { + warnx("pointer index %d is out of range", idx); + return 1; + } + + DIP_SET(curinode, di_db[idx], bno); + inodirty(&curip); + printactive(0); + return 0; +} + CMDFUNCSTART(linkcount) { int rval = 1;